package uts.sdk.modules.droidUtil

import android.content.Context
import android.os.Build
import android.text.TextUtils
import com.github.gzuliyujiang.oaid.DeviceID
import com.github.gzuliyujiang.oaid.DeviceIdentifier
import com.github.gzuliyujiang.oaid.IGetter

// https://gitee.com/li_yu_jiang/Android_CN_OAID
class androidCnOaid{
  
   fun deviceId(context: Context,callback:  (String?) -> Unit?){
      // 获取设备唯一标识，只支持Android 10之前的系统，需要READ_PHONE_STATE权限，可能为空
      val imei = DeviceIdentifier.getIMEI(context)
       callback(imei)
    }
  
    fun androidID(context: Context,callback: (String?) -> Unit?){
      // 获取安卓ID，可能为空
      val androidID = DeviceIdentifier.getAndroidID(context)
      callback(androidID)
    }
  
    fun pseudoID(context: Context,callback: (String?) -> Unit?){
      // 获取伪造ID，根据硬件信息生成，不会为空，有大概率会重复
      callback(DeviceIdentifier.getPseudoID())
    }
  
    fun guid(context: Context,callback: (String?) -> Unit?){
      // 获取GUID，随机生成，不会为空
      callback(DeviceIdentifier.getGUID(context))
    }
  
    fun canvasFingerprint(context: Context,callback: (String?) -> Unit?){
      // 获取帆布指纹，不会为空，具有一定的唯一性，但不能完全保证全球唯一。
      callback(DeviceIdentifier.getCanvasFingerprint())
    }
  
    fun oaidAndAaid(context: Context,callback: (String?) -> Unit?){
        //是否支持OAID/AAID
        val supported = DeviceID.supportedOAID(context)
        if (supported) {
          // 获取OAID，同步调用，第一次可能为空
          val oaid = DeviceIdentifier.getOAID(context)
          if(!TextUtils.isEmpty(oaid)){
            callback(oaid)
            return
          }
          //获取OAID/AAID，异步回调
          DeviceID.getOAID(context, object : IGetter {
            override fun onOAIDGetComplete(result: String?) {
              // 不同厂商的OAID/AAID格式是不一样的，可进行MD5、SHA1之类的哈希运算统一
              if (!TextUtils.isEmpty(result)) {
                callback(result)
              }
            }
            override fun onOAIDGetError(error: Exception?) {
              // 获取OAID/AAID失败
              callback(null)
            }
          })
        }
    }
}
